home *** CD-ROM | disk | FTP | other *** search
/ Cracking 2 / Cracking II..iso / Kompresni & kodovaci programy / ucl-0.91 / include / ucl / uclconf.h < prev    next >
C/C++ Source or Header  |  2000-04-19  |  13KB  |  381 lines

  1. /* uclconf.h -- configuration for the UCL real-time data compression library
  2.  
  3.    This file is part of the UCL real-time data compression library.
  4.  
  5.    Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer
  6.    Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer
  7.    Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer
  8.    Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer
  9.    Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer
  10.  
  11.    The UCL library is free software; you can redistribute it and/or
  12.    modify it under the terms of the GNU General Public License as
  13.    published by the Free Software Foundation; either version 2 of
  14.    the License, or (at your option) any later version.
  15.  
  16.    The UCL library is distributed in the hope that it will be useful,
  17.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  18.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19.    GNU General Public License for more details.
  20.  
  21.    You should have received a copy of the GNU General Public License
  22.    along with the UCL library; see the file COPYING.
  23.    If not, write to the Free Software Foundation, Inc.,
  24.    59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  25.  
  26.    Markus F.X.J. Oberhumer
  27.    <markus.oberhumer@jk.uni-linz.ac.at>
  28.    http://wildsau.idv.uni-linz.ac.at/mfx/ucl.html
  29.  */
  30.  
  31.  
  32. #ifndef __UCLCONF_H
  33. #define __UCLCONF_H
  34.  
  35. #define UCL_VERSION             0x009100L
  36. #define UCL_VERSION_STRING      "0.91"
  37. #define UCL_VERSION_DATE        "Apr 19 2000"
  38.  
  39. /* internal Autoconf configuration file - only used when building UCL */
  40. #if defined(UCL_HAVE_CONFIG_H)
  41. #  include <config.h>
  42. #endif
  43. #include <limits.h>
  44.  
  45. #ifdef __cplusplus
  46. extern "C" {
  47. #endif
  48.  
  49.  
  50. /***********************************************************************
  51. // UCL requires a conforming <limits.h>
  52. ************************************************************************/
  53.  
  54. #if !defined(CHAR_BIT) || (CHAR_BIT != 8)
  55. #  error "invalid CHAR_BIT"
  56. #endif
  57. #if !defined(UCHAR_MAX) || !defined(UINT_MAX) || !defined(ULONG_MAX)
  58. #  error "check your compiler installation"
  59. #endif
  60. #if (USHRT_MAX < 1 ) || (UINT_MAX < 1) || (ULONG_MAX < 1)
  61. #  error "your limits.h macros are broken"
  62. #endif
  63.  
  64. /* workaround a cpp bug under hpux 10.20 */
  65. #define UCL_0xffffffffL     4294967295ul
  66.  
  67.  
  68. /***********************************************************************
  69. // architecture defines
  70. ************************************************************************/
  71.  
  72. #if !defined(__UCL_WIN) && !defined(__UCL_DOS) && !defined(__UCL_OS2)
  73. #  if defined(__WINDOWS__) || defined(_WINDOWS) || defined(_Windows)
  74. #    define __UCL_WIN
  75. #  elif defined(__WIN32__) || defined(_WIN32) || defined(WIN32)
  76. #    define __UCL_WIN
  77. #  elif defined(__NT__) || defined(__NT_DLL__) || defined(__WINDOWS_386__)
  78. #    define __UCL_WIN
  79. #  elif defined(__DOS__) || defined(__MSDOS__) || defined(MSDOS)
  80. #    define __UCL_DOS
  81. #  elif defined(__OS2__) || defined(__OS2V2__) || defined(OS2)
  82. #    define __UCL_OS2
  83. #  elif defined(__palmos__)
  84. #    define __UCL_PALMOS
  85. #  elif defined(__TOS__) || defined(__atarist__)
  86. #    define __UCL_TOS
  87. #  endif
  88. #endif
  89.  
  90. #if (UINT_MAX < UCL_0xffffffffL)
  91. #  if defined(__UCL_WIN)
  92. #    define __UCL_WIN16
  93. #  elif defined(__UCL_DOS)
  94. #    define __UCL_DOS16
  95. #  elif defined(__UCL_PALMOS)
  96. #    define __UCL_PALMOS16
  97. #  elif defined(__UCL_TOS)
  98. #    define __UCL_TOS16
  99. #  elif defined(__C166__)
  100. #  else
  101. #    error "16-bit target not supported - contact me for porting hints"
  102. #  endif
  103. #endif
  104.  
  105. #if !defined(__UCL_i386)
  106. #  if defined(__UCL_DOS) || defined(__UCL_WIN16)
  107. #    define __UCL_i386
  108. #  elif defined(__i386__) || defined(__386__) || defined(_M_IX86)
  109. #    define __UCL_i386
  110. #  endif
  111. #endif
  112.  
  113. #if defined(__UCL_STRICT_16BIT)
  114. #  if (UINT_MAX < UCL_0xffffffffL)
  115. #    include <ucl/ucl16bit.h>
  116. #  endif
  117. #endif
  118.  
  119.  
  120. /***********************************************************************
  121. // integral and pointer types
  122. ************************************************************************/
  123.  
  124. /* Integral types with 32 bits or more */
  125. #if !defined(UCL_UINT32_MAX)
  126. #  if (UINT_MAX >= UCL_0xffffffffL)
  127.      typedef unsigned int       ucl_uint32;
  128.      typedef int                ucl_int32;
  129. #    define UCL_UINT32_MAX      UINT_MAX
  130. #    define UCL_INT32_MAX       INT_MAX
  131. #    define UCL_INT32_MIN       INT_MIN
  132. #  elif (ULONG_MAX >= UCL_0xffffffffL)
  133.      typedef unsigned long      ucl_uint32;
  134.      typedef long               ucl_int32;
  135. #    define UCL_UINT32_MAX      ULONG_MAX
  136. #    define UCL_INT32_MAX       LONG_MAX
  137. #    define UCL_INT32_MIN       LONG_MIN
  138. #  else
  139. #    error "ucl_uint32"
  140. #  endif
  141. #endif
  142.  
  143. /* ucl_uint is used like size_t */
  144. #if !defined(UCL_UINT_MAX)
  145. #  if (UINT_MAX >= UCL_0xffffffffL)
  146.      typedef unsigned int       ucl_uint;
  147.      typedef int                ucl_int;
  148. #    define UCL_UINT_MAX        UINT_MAX
  149. #    define UCL_INT_MAX         INT_MAX
  150. #    define UCL_INT_MIN         INT_MIN
  151. #  elif (ULONG_MAX >= UCL_0xffffffffL)
  152.      typedef unsigned long      ucl_uint;
  153.      typedef long               ucl_int;
  154. #    define UCL_UINT_MAX        ULONG_MAX
  155. #    define UCL_INT_MAX         LONG_MAX
  156. #    define UCL_INT_MIN         LONG_MIN
  157. #  else
  158. #    error "ucl_uint"
  159. #  endif
  160. #endif
  161.  
  162.  
  163. /* Memory model that allows to access memory at offsets of ucl_uint. */
  164. #if !defined(__UCL_MMODEL)
  165. #  if (UCL_UINT_MAX <= UINT_MAX)
  166. #    define __UCL_MMODEL
  167. #  elif defined(__UCL_DOS16) || defined(__UCL_WIN16)
  168. #    define __UCL_MMODEL        __huge
  169. #    define UCL_999_UNSUPPORTED
  170. #  elif defined(__UCL_PALMOS16) || defined(__UCL_TOS16)
  171. #    define __UCL_MMODEL
  172. #  else
  173. #    error "__UCL_MMODEL"
  174. #  endif
  175. #endif
  176.  
  177. /* no typedef here because of const-pointer issues */
  178. #define ucl_byte                unsigned char __UCL_MMODEL
  179. #define ucl_bytep               unsigned char __UCL_MMODEL *
  180. #define ucl_charp               char __UCL_MMODEL *
  181. #define ucl_voidp               void __UCL_MMODEL *
  182. #define ucl_shortp              short __UCL_MMODEL *
  183. #define ucl_ushortp             unsigned short __UCL_MMODEL *
  184. #define ucl_uint32p             ucl_uint32 __UCL_MMODEL *
  185. #define ucl_int32p              ucl_int32 __UCL_MMODEL *
  186. #define ucl_uintp               ucl_uint __UCL_MMODEL *
  187. #define ucl_intp                ucl_int __UCL_MMODEL *
  188. #define ucl_voidpp              ucl_voidp __UCL_MMODEL *
  189. #define ucl_bytepp              ucl_bytep __UCL_MMODEL *
  190.  
  191. typedef int ucl_bool;
  192.  
  193. #ifndef ucl_sizeof_dict_t
  194. #  define ucl_sizeof_dict_t     sizeof(ucl_bytep)
  195. #endif
  196.  
  197.  
  198. /***********************************************************************
  199. // function types
  200. ************************************************************************/
  201.  
  202. /* linkage */
  203. #if !defined(__UCL_EXTERN_C)
  204. #  ifdef __cplusplus
  205. #    define __UCL_EXTERN_C      extern "C"
  206. #  else
  207. #    define __UCL_EXTERN_C      extern
  208. #  endif
  209. #endif
  210.  
  211. /* calling conventions */
  212. #if !defined(__UCL_CDECL)
  213. #  if defined(__UCL_DOS16) || defined(__UCL_WIN16)
  214. #    define __UCL_CDECL         __far __cdecl
  215. #  elif defined(__UCL_i386) && defined(_MSC_VER)
  216. #    define __UCL_CDECL         __cdecl
  217. #  elif defined(__UCL_i386) && defined(__WATCOMC__)
  218. #    define __UCL_CDECL         __near __cdecl
  219. #  else
  220. #    define __UCL_CDECL
  221. #  endif
  222. #endif
  223. #if !defined(__UCL_ENTRY)
  224. #  define __UCL_ENTRY           __UCL_CDECL
  225. #endif
  226.  
  227. /* DLL export information */
  228. #if !defined(__UCL_EXPORT1)
  229. #  define __UCL_EXPORT1
  230. #endif
  231. #if !defined(__UCL_EXPORT2)
  232. #  define __UCL_EXPORT2
  233. #endif
  234.  
  235. /* calling convention for C functions */
  236. #if !defined(UCL_PUBLIC)
  237. #  define UCL_PUBLIC(_rettype)  __UCL_EXPORT1 _rettype __UCL_EXPORT2 __UCL_ENTRY
  238. #endif
  239. #if !defined(UCL_EXTERN)
  240. #  define UCL_EXTERN(_rettype)  __UCL_EXTERN_C UCL_PUBLIC(_rettype)
  241. #endif
  242. #if !defined(UCL_PRIVATE)
  243. #  define UCL_PRIVATE(_rettype) static _rettype __UCL_ENTRY
  244. #endif
  245.  
  246. /* cdecl calling convention for assembler functions */
  247. #if !defined(UCL_PUBLIC_CDECL)
  248. #  define UCL_PUBLIC_CDECL(_rettype) \
  249.                 __UCL_EXPORT1 _rettype __UCL_EXPORT2 __UCL_CDECL
  250. #endif
  251. #if !defined(UCL_EXTERN_CDECL)
  252. #  define UCL_EXTERN_CDECL(_rettype)  __UCL_EXTERN_C UCL_PUBLIC_CDECL(_rettype)
  253. #endif
  254.  
  255.  
  256. typedef int
  257. (__UCL_ENTRY *ucl_compress_t)   ( const ucl_byte *src, ucl_uint  src_len,
  258.                                         ucl_byte *dst, ucl_uint *dst_len,
  259.